草庐IT

javascript oop、instanceof 和基类

全部标签

c++ - 为什么当我抛出派生类的对象时,基类的 catch block 会捕获异常?

这个问题在这里已经有了答案:WhyBaseClasscatchblockcatchderivedclassobject?(3个答案)Whythrowatderivedclasscatchesbybase?(5个答案)关闭5年前。如果我正在传递派生类的对象,那么应该调用派生类的catchblock。但是输出显示异常被基类捕获。为什么?#includeusingnamespacestd;classBase{};classDerived:publicBase{};intmain(){Derivedd;//someotherstufftry{//Somemonitoredcodethrowd;

C++:使用计算参数调用基类构造函数

这个简单的例子演示了调用基类构造函数的C++语法——据我作为C++学习者的理解:classBaseClass{protected:inti;public:BaseClass(intx){i=x;}};classDerivedClass:publicBaseClass{intj;public:DerivedClass(intx,inty):BaseClass(y){j=x;}在这里,基类构造函数可以将命名参数作为派生类构造函数的输入。现在,如果我想用一个不是直接输入到DerivedClass()的输入值调用BaseClass()构造函数怎么办?基本上,我想在DerivedClass()中

c++ - 迭代可变参数模板类的基类

如何遍历可变参数模板类的所有基类并为每个基类调用一个函数。这是一个最小的例子:structA{voidfoo(){std::coutstructX:publicU...{voidfoo(){static_cast(this)->foo()...;//???shouldcall`foo`forall`U`}};intmain(){Xx;x.foo();} 最佳答案 你通常不能没有C++17的折叠表达式。那里的省略号无效,星号后面的省略号将创建一个指针模板参数列表。对于要重复的适当模式,省略号必须位于语句的末尾,这在这里不起作用。我找到

c++ - std::unique_ptr 编译器错误:派生类的成员无法访问基类的私有(private)成员

我得到CompilerErrorC2248当我尝试编译以下代码时:#include#includeusingnamespacestd;classdata{public:staticdataparse(){datad;data::parse(d);returnd;}list>l;private:staticvoidparse(data&node){}};intmain(){return0;}为什么?我该如何解决这个问题?注意:我使用std::shared_ptr而不是std::unique_ptr没有问题。 最佳答案 您需要为您的类型

c++ - 防止继承类覆盖基类的虚函数

这个问题在这里已经有了答案:Isthereawaytopreventamethodfrombeingoverriddeninsubclasses?(14个答案)关闭7年前。情况是这样的。classInterface{public:virtualvoidfoo()=0;}classMyClass:Interface{public:virtualvoidbar()=0;private:voidfoo(){//Someprivateworkandchecks.bar();};}我希望我的用户创建一个继承自MyClass的类,他们必须在那里实现bar()。但是我怎样才能强制他们不覆盖foo()

c++ - 如何子类化模板化基类?

我有以下数据结构:structfastEngine{...}structslowEngine{...}templateclassCar{Tengine;vectorbackupEngines;virtualvoiddrive()=0;}classFastCar:publicCar{virtualvoiddrive(){//usethevaluesof"engine"insomeway}}classSlowCar:publicCar{virtualvoiddrive(){//usethevaluesof"engine"insomeway}}Car*getCarFromCarFactory

c++ - 派生类虚方法调用基类虚方法

在C++中-假设派生类派生自基类,并且基类中有一个虚拟方法被派生类覆盖。谁能告诉我一个现实生活场景,其中派生类版本的虚函数可能需要调用基类版本的虚函数?例子,classBase{public:Base(){}virtual~Base(){}virtualvoiddisplay(){cout 最佳答案 每当您还需要基类行为但不想(或不能)重新实现它时,您就会这样做。一个常见的例子是序列化:voidDerived::Serialize(Container&where){Base::Serialize(where);//nowserial

c++ - g++ "because the following virtual functions are pure"带抽象基类

这是我产生错误的示例代码:structImpl{intdata_size_;intfind(intvar){return0;}intget(introwid){return0;}};classContainer{public:Container(){}virtual~Container(){}virtualintget_size()=0;virtualintget(introwid)=0;};classSortedContainer:virtualpublicContainer{public:virtualintfind(intvar)=0;};classContainerImpl:p

ios - 如何在 Swift 3 的基类中实例化对象

我有一个ModelBase类,我正在从它继承几个类(即任务、里程碑等)。我想创建一个名为“all”的静态方法,它将获取所有模型(假设是一个数组),但我希望该数组的类型为[Task]而不是[ModelBase]。尽管我不想尽可能为每个子类编写该方法。classTask:ModelBase{overrideclassvartableName:String{return"Task"}}然后我可以这样做:Task.all({(tasks:[Task])in//dostuffwithtasks});到目前为止,我一直在使用type(of:self)来访问非静态/类方法内部的类级变量。但是,我想要

ios - 在基类中使用泛型函数

我正在尝试做什么......在我的应用程序中,我有很多看起来很相似的表单字段,具有一系列自定义功能(在突出显示e.c.t.时更改颜色)。我想创建一种包装类,它抽象所有这些代码,然后从中继承以实现我的不同输入类型,例如日期输入和文本输入。继承的类只需要为其类型设置正确的输入控件。我尝试过的这更像是伪代码。我已经尝试了几个小时,但我只是不明白如何实现我所需要的我想我从一个基类开始,这需要定义对输入控件的引用,以及一些每个方法都会覆盖的方法,例如能够设置或获取当前值classBaseInput:UIView{letlabel=UILabel()letcontrol:T...Abunchofm